﻿Public Class frmListadoPrestamos
    Dim utilidades As New Utilidades
    Dim myAccesoDatos As New AccesoDatos

    Private Sub frmListadoPrestamos_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        utilidades.confirmarSalirDelFormulario(e)
    End Sub

    Private Sub frmListadoPrestamos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        myAccesoDatos.traer_valores_combo(Me.cmbEmpleo, Constantes.Tabla_TIPOS_EMPLEOS)
    End Sub

    Private Sub cmdSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSalir.Click
        Me.Close()
    End Sub

    Private Sub cmdReport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdReport.Click
        If utilidades.validarRangoDeFechas(txtFechaDesde, txtFechaHasta) = False Then
            Exit Sub
        End If
        If Me.cmbEmpleo.SelectedIndex < 1 Then
            MsgBox("El Empleo del Cliente requerido", vbOKOnly + vbCritical, "Atención")
            Me.cmbEmpleo.Focus()
            Exit Sub
        End If

        Dim report As New rptPrestamosPagadosTermino
        Dim ds As New dsPrestamosPagadosTermino
        Dim myAccesoDatos As New AccesoDatos
        Dim myConsulta As String

        myConsulta = "SELECT DISTINCT P.ID, CL.ID AS NRO_CLIENTE, TD.DESCRIPCION AS TIPO_DOCUMENTO,  "
        myConsulta = myConsulta & "CL.NRO_DOCUMENTO, (CL.APELLIDO + ', ' + CL.NOMBRE) AS APELLIDO_NOMBRE, "
        myConsulta = myConsulta & "CONVERT(int, floor(S.MONTO)) AS MONTO, S.CANTIDAD_CUOTAS "
        myConsulta = myConsulta & "FROM PRESTAMOS P INNER JOIN SOLICITUDES_PRESTAMOS S ON (P.ID_SOLICITUD = S.ID) "
        myConsulta = myConsulta & "INNER JOIN CUOTAS C ON (P.ID = C.ID_PRESTAMO) "
        myConsulta = myConsulta & "INNER JOIN CLIENTES CL ON (S.ID_CLIENTE = CL.ID) "
        myConsulta = myConsulta & "INNER JOIN TIPOS_DOCUMENTOS TD ON (CL.ID_TIPO_DOCUMENTO = TD.ID) "
        myConsulta = myConsulta & "INNER JOIN EMPLEOS_CLIENTES EC ON (EC.ID_CLIENTE = CL.ID) "
        myConsulta = myConsulta & "INNER JOIN FACTURAS F ON (F.ID_PRESTAMO = C.ID_PRESTAMO AND F.NRO_CUOTA = C.NRO_CUOTA) "
        myConsulta = myConsulta & "WHERE 1 = 1 "

        Dim where As New String("")
        where = armarWhereConsulta()

        If Not where.Trim = "" Then
            myConsulta = myConsulta + where
        End If

        Dim tabla As Data.DataTable
        tabla = myAccesoDatos.ejecutarConsulta(myConsulta)
        If tabla.Rows.Count > 0 Then
            myAccesoDatos.ejecutarConsultaInforme(myConsulta, ds.PrestamosTermino)

            Dim row As Data.DataRow = ds.Datos.NewRow()
            Dim fechaDesde = txtFechaDesde.Text().Trim()
            Dim fechaHasta = txtFechaHasta.Text().Trim()
            If Not (fechaDesde = "/  /" Or fechaHasta = "/  /") Then
                row.Item("desde") = fechaDesde
                row.Item("hasta") = fechaHasta
            Else
                row.Item("desde") = " --"
                row.Item("hasta") = " --"
            End If
            If optSi.Checked = True Then
                row.Item("pagado") = "Si"
            Else
                row.Item("pagado") = "No"
            End If

            row.Item("empleo") = cmbEmpleo.Text

            ds.Datos.Rows.Add(row)

            report.SetDataSource(ds)

            Dim frmReportPrestamosPagadosTermino As New frmReportPrestamosPagadosTermino
            frmReportPrestamosPagadosTermino.crv.ReportSource = report
            frmReportPrestamosPagadosTermino.ShowDialog()

        Else
            MsgBox("No es posible generar el Listado en base a los Filtros en Pantalla.", vbOKOnly + MsgBoxStyle.Information, "Atención")
        End If
        
    End Sub

    Public Function armarWhereConsulta() As String
        Dim where As New String("")
        Dim fechaDesde = txtFechaDesde.Text().Trim()
        Dim fechaHasta = txtFechaHasta.Text().Trim()
        If Not (fechaDesde = "/  /" Or fechaHasta = "/  /") Then

            fechaDesde = utilidades.obtenerFechaFormatoSQLServer2008(fechaDesde)
            fechaHasta = utilidades.obtenerFechaFormatoSQLServer2008(fechaHasta)

            where = where + " AND F.FECHA BETWEEN '" + fechaDesde + "' AND '" + fechaHasta + "'"
        End If
        If cmbEmpleo.SelectedIndex > 0 Then
            where = where + " AND EC.ID_TIPO_EMPLEO = " + Convert.ToString(cmbEmpleo.SelectedValue)
        End If
        If optSi.Checked = True Then
            where = where + " AND F.INTERES = " + Convert.ToString(0)
        Else
            where = where + " AND F.INTERES > " + Convert.ToString(0)
        End If

        Return where

    End Function

    Private Sub txtFechaDesde_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtFechaDesde.KeyPress
        utilidades.validarKeyPressNumerico(e)
    End Sub

    Private Sub txtFechaHasta_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtFechaHasta.KeyPress
        utilidades.validarKeyPressNumerico(e)
    End Sub

End Class